In the field of data storage, enterprises have used a variety of techniques in order to store the data that their software applications use. At one point in time, each individual computer server within an enterprise running a particular software application (such as a database or e-mail application) would store data from that application in any number of attached local disks. Although this technique was relatively straightforward, it led to storage manageability problems in that the data was stored in many different places throughout the enterprise.
These problems led to the introduction of the storage area network in which each computer server within an enterprise communicated with a central storage computer node that included all of the storage disks. The application data that used to be stored locally at each computer server was now stored centrally on the central storage node via a fiber channel switch, for example. Although such a storage area network was easier to manage, changes in computer server architecture created new problems.
With the advent of virtualization, each computer server could now host dozens of software applications through the use of a hypervisor on each computer server and the use of virtual machines. Thus, computer servers which had been underutilized could now host many different server applications, each application needing to store its data within the storage area network. Weaknesses in the storage area network were revealed by the sheer number of server applications needing to access disks within the central storage node. For example, the storage node was taxed by the sheer number of requests from all of the application servers. Although additional storage nodes could be added (each with multiple disks), these nodes were expensive, were oblivious to the other nodes, and had to be managed individually. Another weakness was trying to manage replication of files and disaster recovery. Also, provisioning a new storage disk for a particular virtual machine could take as long as four weeks, much too long for today's pace of innovation. And, in order to configure a storage system, some prior technologies required the administrator to first purchase a monolithic hardware box and then one-by-one add the functionalities that he or she desired to protect the data stored on that hardware. For example, it was often necessary to purchase separate products (or licenses) to perform compression, replication, de-duplication, etc.
In response, new storage services have emerged, such as an Elastic Block Service, which have attempted to make provisioning easier, simplify policy management and drive down costs. Unfortunately, this type of service only provides a block-level service, among other deficiencies.